class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
    vector<int>v;
    int hash1[26]={0};//因为都是小写字母所以用26个来存放即可 ，这个用来计算p中的字符个数
    for(auto tmp:p)
    {
        hash1[tmp-'a']++;
    }
    int hash2[26]={0};//这个用来存放s中的字符
    int left=0,right=0,count=0;
    int n=s.size();
    int m=p.size();
    for(;right<n;right++)
    {
        //先进窗口后检测是不是有效字符
        if(++hash2[s[right]-'a']<=hash1[s[right]-'a'])count++;
        if(right-left+1>m)//长度大于p的长度了出窗口
        //先判断再出窗口
        {
            if(hash2[s[left]-'a']--<=hash1[s[left]-'a'])count--;
            left++;
        }
        if(count==m)v.push_back(left);
    }
    return v;
    }
};
